/*
 * @Author: DUST
 * @Date: 2023-06-29 15:36:18
 * @LastEditors: DUST
 * @LastEditTime: 2023-06-29 16:21:45
 * @FilePath: \koa-node-ts\webpack.config.js
 * @Description: 
 * undefined
 */
// 引入path包
const path = require('path')
const {
  CleanWebpackPlugin
} = require('clean-webpack-plugin')
const nodePolyfillWebpackPlugin = require("node-polyfill-webpack-plugin")
const ProgressBarWebpackPlugin = require('progress-bar-webpack-plugin')

module.exports = {
  // 指定入口文件
  entry: "./index.ts",

  // 指定打包文件所在目录
  output: {
    path: path.resolve(__dirname, 'dist'),
    // 打包后文件的名称
    filename: "bundle.js"
  },
  resolve: {
    alias: {
      crypto: false,
      path: false
    },
    extensions: ['.ts', '.js']
  },
  // 指定webpack打包的时候要使用的模块
  module: {
    // 指定要价在的规则
    rules: [{
      // test指定的是规则生效的文件,意思是，用ts-loader来处理以ts为结尾的文件
      test: /\.ts$/,
      use: [
        // 配置babel
        {
          // 指定加载器
          loader: 'babel-loader',
          // 设置babel
          options: {
            // 设置预定义的环境
            presets: [
              [
                // 指定环境插件
                "@babel/preset-env",
                // 配置信息
                {
                  targets: {
                    "chrome": "88"
                  },
                  // 指定corejs的版本
                  "corejs": "3",
                  // 使用corejs的方式为按需加载
                  "useBuiltIns": "usage"
                }
              ]
            ]
          }
        },
        'ts-loader'
      ],
      // use: 'ts-loader',
      exclude: /node_modules/
    }]
  },
  plugins: [
    new CleanWebpackPlugin(),
    new nodePolyfillWebpackPlugin(),
    new ProgressBarWebpackPlugin(),
  ]
}